package com.vanillaln.producer.demo;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 生产者
 */
@Slf4j
public class Producer {

    /**
     * 队列名称
     */
    private static final String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 链接 rabbitmq 的 IP 地址
        factory.setHost("localhost");
        // 设置用户名和密码
        factory.setUsername("guest");
        factory.setPassword("guest");
        // 创建链接
        Connection connection = factory.newConnection();
        // 获取信道
        Channel channel = connection.createChannel();
        /*
        设置队列
        1. 队列名称
        2. 消息持久化
        3. 排他性(是否进行消息共享) true -> 不可以多个消费者共享 false -> 可以
        4. 是否自动删除
        5. 其他配置，死信 ttl
         */
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        // 发送消息
        String message = "你干嘛~哎呦";
        /*
        1. 交换机
        2. 发送到哪一个队列
        3. 其他配置（todo）
        4. 发送的消息 message (二进制)
         */
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        log.info("消息:{}发送完毕", message);
    }
}
